package cn.bdqn.page1;

import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.Random;
import java.util.Scanner;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/**
 * 使用嗖嗖类
 */
public class UseSoSo {
	// 因为所有的方法都需要DOM树
	static Document document = null;
	static Element root = null;

	// 保存用户信息类
	public static void save(String path) {
		OutputFormat format = null;
		XMLWriter writer = null;
		try {
			format = OutputFormat.createPrettyPrint();
			writer = new XMLWriter(new FileWriter("UserMessage.xml"), format);
			writer.write(document);

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				writer.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}

	// 使用嗖嗖
	public void useSo() throws Exception {
		Scanner input = new Scanner(System.in);
		System.out.print("请输入手机号码：");
		String phone = input.next();
		System.out.print("请输入密码：");
		String pwd = input.next();
		SAXReader reader = new SAXReader();
		document = reader.read("UserMessage.xml");
		root = (Element) document.getRootElement();
		Iterator itUser = root.elementIterator();
		while (itUser.hasNext()) {
			Element user = (Element) itUser.next();
			if (phone.equals(user.attributeValue("id"))
					&& pwd.equals(user.attributeValue("pwd"))) {
				if (phone.equals(user.attributeValue("id"))) {
					if (user.attributeValue("longCall").equals("200分钟/月")) {// 超人套餐
						Random random = new Random();
						int num = random.nextInt(5);
						switch (num) {
						case 0:
							// 通话 问候客户，谁知其如此难缠，通话90分钟
							int talk = Integer.parseInt(user
									.attributeValue("longCall"));
							// 消费90分钟
							int talkCus = 90;
							int balanceCus = talk - talkCus;
							if (balanceCus < 0) {
								// 先把套餐的额度改成0
								user.attribute("longCall").setValue("0分钟");
								// 多出来消费的钱数
								double consume = (Math.abs(balanceCus)) * 0.2;
								// 余额
								double balance = Double.parseDouble(user
										.attributeValue("balance")) - consume;
								if (balance < 0) {
									throw new Exception("话费余额不足，请充值！");
								}
								user.attribute("balance").setValue(
										balance + "元");
							} else {
								user.attribute("longCall").setValue(
										balanceCus + "分钟");
							}
							System.out.println("问候客户，谁知其如此难缠，通话90分钟");
							user.addAttribute("record", "问候客户，谁知其如此难缠，通话90分钟");
							break;
						case 1:
							// 通话 询问妈妈身体状况，本地通话30分钟
							talk = Integer.parseInt(user
									.attributeValue("longCall"));
							// 消费90分钟
							talkCus = 30;
							balanceCus = talk - talkCus;
							if (balanceCus < 0) {
								// 先把套餐的额度改成0
								user.attribute("longCall").setValue("0分钟");
								// 多出来消费的钱数
								double consume = (Math.abs(balanceCus)) * 0.2;
								// 余额
								double balance = Double.parseDouble(user
										.attributeValue("balance")) - consume;
								if (balance < 0) {
									throw new Exception("话费余额不足，请充值！");
								}
								user.attribute("balance").setValue(
										balance + "元");
							} else {
								user.attribute("longCall").setValue(
										balanceCus + "分钟");
							}
							System.out.println("询问妈妈身体状况，本地通话30分钟");
							user.addAttribute("record", "询问妈妈身体状况，本地通话30分钟");
							break;
						case 2:
							// 短信 参与环境保护实施方案问卷调查，发送短信5条
							int smag = Integer.parseInt(user
									.attributeValue("shortMessage"));
							// 消费5条
							int smagCus = 5;
							if (Integer.parseInt(user
									.attributeValue("shortMessage")) < smagCus) {
								throw new Exception("本次已通话10分钟，您的余额不足，请充值后再使用！");
							}
							int balanCus = smag - smagCus;
							if (balanCus < 0) {
								// 先把套餐的额度改成0
								user.attribute("shortMessage").setValue("0条");
								// 多出来消费的钱数
								double consume = (Math.abs(balanCus)) * 0.1;
								// 余额
								double balance = Double.parseDouble(user
										.attributeValue("balance")) - consume;
								if (balance < 0) {
									throw new Exception("话费余额不足，请充值！");
								}
								user.attribute("balance").setValue(
										balance + "元");
							} else {
								user.attribute("shortMessage").setValue(
										balanCus + "条");
							}
							System.out.println("参与环境保护实施方案问卷调查，发送短信5条");
							user.addAttribute("record", "参与环境保护实施方案问卷调查，发送短信5条");
							break;
						case 3:
							// 短信 通知朋友手机换号，发送短信50条
							smag = Integer.parseInt(user
									.attributeValue("shortMessage"));
							// 消费50条
							smagCus = 50;
							balanCus = smag - smagCus;
							if (balanCus < 0) {
								// 先把套餐的额度金额改成0
								user.attribute("shortMessage").setValue("0条");
								// 多出来消费的钱数
								double consume = (Math.abs(balanCus)) * 0.1;
								// 余额
								double balance = Double.parseDouble(user
										.attributeValue("balance")) - consume;
								if (balance < 0) {
									throw new Exception("话费余额不足，请充值！");
								}
								user.attribute("balance").setValue(
										balance + "元");
							} else {
								user.attribute("shortMessage").setValue(
										balanCus + "条");
							}
							System.out.println("通知朋友手机换号，发送短信50条");
							user.addAttribute("record", "通知朋友手机换号，发送短信50条");
							break;
						case 4:
							// 上网 和女朋友微信视频聊天，使用流量1G
							int it = Integer.parseInt(user
									.attributeValue("internetTraffic"));
							// 消费流量1G
							int itCus = 1;
							int balCus = it - itCus;
							if (balCus < 0) {
								// 先把套餐的额度改成0
								user.attribute("internetTraffic")
										.setValue("0G");
								// 多出来消费的钱数
								double consume = (Math.abs(balCus)) * 0.1 * 1024;
								// 余额
								double balance = Double.parseDouble(user
										.attributeValue("balance")) - consume;
								if (balance < 0) {
									throw new Exception("话费余额不足，请充值！");
								}
								user.attribute("balance").setValue(
										balance + "元");
							} else {
								user.attribute("internetTraffic").setValue(
										balCus + "G");
							}
							System.out.println("和女朋友微信视频聊天，使用流量1G");
							user.addAttribute("record", "和女朋友微信视频聊天，使用流量1G");
							break;
						case 5:
							// 上网 晚上手机在线看韩剧，不留神睡着啦！使用流量2G
							it = Integer.parseInt(user
									.attributeValue("internetTraffic"));
							// 消费流量2G
							itCus = 1;
							balCus = it - itCus;
							if (balCus < 0) {
								// 先把套餐的额度改成0
								user.attribute("internetTraffic")
										.setValue("0G");
								// 多出来消费的钱数
								double consume = (Math.abs(balCus)) * 0.1 * 1024;
								// 余额
								double balance = Double.parseDouble(user
										.attributeValue("balance")) - consume;
								if (balance < 0) {
									throw new Exception("话费余额不足，请充值！");
								}
								user.attribute("balance").setValue(
										balance + "元");
							} else {
								user.attribute("internetTraffic").setValue(
										balCus + "G");
							}
							System.out.println("晚上手机在线看韩剧，不留神睡着啦！使用流量2G");
							user.addAttribute("record",
									"晚上手机在线看韩剧，不留神睡着啦！使用流量2G");
							break;
						}
					} else if (user.attributeValue("longCall").equals("0分钟/月")) {// 网虫套餐
						Random random = new Random();
						int num = random.nextInt(2);
						switch (num) {
						case 0:
							// 上网 和女朋友微信视频聊天，使用流量1G
							int it = Integer.parseInt(user
									.attributeValue("internetTraffic"));
							// 消费流量1G
							int itCus = 1;
							int balCus = it - itCus;
							if (balCus < 0) {
								// 先把套餐的额度改成0
								user.attribute("internetTraffic")
										.setValue("0G");
								// 多出来消费的钱数
								double consume = (Math.abs(balCus)) * 0.1 * 1024;
								// 余额
								double balance = Double.parseDouble(user
										.attributeValue("balance")) - consume;
								if (balance < 0) {
									throw new Exception("话费余额不足，请充值！");
								}
								user.attribute("balance").setValue(
										balance + "元");
							} else {
								user.attribute("internetTraffic").setValue(
										balCus + "G");
							}
							System.out.println("和女朋友微信视频聊天，使用流量1G");
							user.addAttribute("record", "和女朋友微信视频聊天，使用流量1G");
							break;
						case 1:
							// 上网 晚上手机在线看韩剧，不留神睡着啦！使用流量2G
							it = Integer.parseInt(user
									.attributeValue("internetTraffic"));
							// 消费流量2G
							itCus = 2;
							balCus = it - itCus;
							if (balCus < 0) {
								// 先把套餐的额度改成0
								user.attribute("internetTraffic")
										.setValue("0G");
								// 多出来消费的钱数
								double consume = (Math.abs(balCus)) * 0.1 * 1024;
								// 余额
								double balance = Double.parseDouble(user
										.attributeValue("balance")) - consume;
								if (balance < 0) {
									throw new Exception("话费余额不足，请充值！");
								}
								user.attribute("balance").setValue(
										balance + "元");
							} else {
								user.attribute("internetTraffic").setValue(
										balCus + "G");
							}
							System.out.println("晚上手机在线看韩剧，不留神睡着啦！使用流量2G");
							user.addAttribute("record",
									"晚上手机在线看韩剧，不留神睡着啦！使用流量2G");
							break;
						}
					} else if (user.attributeValue("longCall")
							.equals("500分钟/月")) {// 话唠套餐
						Random random = new Random();
						int num = random.nextInt(4);
						switch (num) {
						case 0:
							// 通话 问候客户，谁知其如此难缠，通话90分钟
							int talk = Integer.parseInt(user
									.attributeValue("longCall"));
							// 消费90分钟
							int talkCus = 90;
							int balanceCus = talk - talkCus;
							if (balanceCus < 0) {
								// 先把套餐的额度改成0
								user.attribute("longCall").setValue("0分钟");
								// 多出来消费的钱数
								double consume = (Math.abs(balanceCus)) * 0.2;
								// 余额
								double balance = Double.parseDouble(user
										.attributeValue("balance")) - consume;
								if (balance < 0) {
									throw new Exception("话费余额不足，请充值！");
								}
								user.attribute("balance").setValue(
										balance + "元");
							} else {
								user.attribute("longCall").setValue(
										balanceCus + "分钟");
							}
							System.out.println("问候客户，谁知其如此难缠，通话90分钟");
							user.addAttribute("record", "问候客户，谁知其如此难缠，通话90分钟");
							break;
						case 1:
							// 通话 询问妈妈身体状况，本地通话30分钟
							talk = Integer.parseInt(user
									.attributeValue("longCall"));
							// 消费30分钟
							talkCus = 30;
							balanceCus = talk - talkCus;
							if (balanceCus < 0) {
								// 先把套餐的额度改成0
								user.attribute("longCall").setValue("0分钟");
								// 多出来消费的钱数
								double consume = (Math.abs(balanceCus)) * 0.2;
								// 余额
								double balance = Double.parseDouble(user
										.attributeValue("balance")) - consume;
								if (balance < 0) {
									throw new Exception("话费余额不足，请充值！");
								}
								user.attribute("balance").setValue(
										balance + "元");
							} else {
								user.attribute("longCall").setValue(
										balanceCus + "分钟");
							}
							System.out.println("问候客户，谁知其如此难缠，通话90分钟");
							user.addAttribute("record", "问候客户，谁知其如此难缠，通话90分钟");
							break;
						case 2:
							// 短信 参与环境保护实施方案问卷调查，发送短信5条
							int smag = Integer.parseInt(user
									.attributeValue("shortMessage"));
							// 消费5条
							int smagCus = 5;
							int balanCus = smag - smagCus;
							if (balanCus < 0) {
								// 先把套餐的额度改成0
								user.attribute("shortMessage").setValue("0条");
								// 多出来消费的钱数
								double consume = (Math.abs(balanCus)) * 0.1;
								// 余额
								double balance = Double.parseDouble(user
										.attributeValue("balance")) - consume;
								if (balance < 0) {
									throw new Exception("话费余额不足，请充值！");
								}
								user.attribute("balance").setValue(
										balance + "元");
							} else {
								user.attribute("shortMessage").setValue(
										balanCus + "条");
							}
							System.out.println("参与环境保护实施方案问卷调查，发送短信5条");
							user.addAttribute("record", "参与环境保护实施方案问卷调查，发送短信5条");
							break;
						case 3:
							// 短信 通知朋友手机换号，发送短信50条
							smag = Integer.parseInt(user
									.attributeValue("shortMessage"));
							// 消费50条
							smagCus = 50;
							balanCus = smag - smagCus;
							if (balanCus < 0) {
								// 先把套餐的额度金额改成0
								user.attribute("shortMessage").setValue("0条");
								// 多出来消费的钱数
								double consume = (Math.abs(balanCus)) * 0.1;
								// 余额
								double balance = Double.parseDouble(user
										.attributeValue("balance")) - consume;
								if (balance < 0) {
									throw new Exception("话费余额不足，请充值！");
								}
								user.attribute("balance").setValue(
										balance + "元");
							} else {
								user.attribute("shortMessage").setValue(
										balanCus + "条");
							}
							System.out.println("通知朋友手机换号，发送短信50条");
							user.addAttribute("record", "通知朋友手机换号，发送短信50条");
							break;
						}
					}
				}

			}
			save("UserMessage.xml");
			return;
		}

	}
}
